package com.hsj.aop.annoaop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.junit.After;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;

@Component
@Aspect   //切面类
public class AddAspect {
    //设置切入点 和 通知类型
    //表达式： execution (public int com.hsj.spring.aop.leiming 方法名 (参数))
    //通知类型： 前置、返回、异常、后置、环绕
    @Before(value="execution(public int com.hsj.aop.annoaop.AddImpl.add(..))")  //前置 ,参数是切入点表达式， 也就是要增强的目标方法
//    @Before(value="execution(* com.hsj.aop.annoaop.*.*(..))")
    public void before(JoinPoint joinPoint){
        String methodMethod = joinPoint.getSignature().getName();  //获取增强的方法名
        System.out.println("前置通知");
    }

//    @AfterReturning() //返回通知
//    public void AfterReturning(){
//        System.out.println("前置通知");
//    }
//    @AfterThrowing  //异常通知
//    public void AfterThrowing(){
//        System.out.println("前置通知");
//    }
//    @After() //后置
//    public void After(){
//        System.out.println("前置通知");
//    }
//    @Around("") //环绕
//    public void Around(){
//        System.out.println("前置通知");
//    }

}
